//
// Created by Criinal Nicole on 2020/6/15.
// 该命名空间用于将数据写入data
// 相当于用文件流模拟簇序列
//

#ifndef FILESYSTEM_IO_H
#define FILESYSTEM_IO_H

#include <fstream>
#include <iostream>

namespace IO {

//    储存的文件名
    extern char *_fileName;

//    从文件中读出
    template<typename T>
    void GetData(long long offset, T &ret) {
        std::ifstream f_in(_fileName, std::ios::binary);
        f_in.seekg(offset, std::ios::beg);
        f_in.read((char *) &ret, sizeof(T));
        f_in.close();
    };

//    写入文件
    template<typename T>
    void WriteData(long long offset, const T &data) {
//        如果不存在，则创建
        std::fstream f_in(_fileName, std::ios::binary | std::ios::out);
        f_in.close();
        std::ofstream f_out(_fileName, std::ios::binary
                                       | std::ios::in);
        f_out.seekp(offset, std::ios::beg);
        f_out.write((char *) &data, sizeof(T));
        f_out.close();
    }
}

#endif //FILESYSTEM_IO_H
